package com.macro.mall.service.impl;

import com.macro.mall.dto.SmsFlashPromotionSessionDetail;
import com.macro.mall.mapper.SmsFlashPromotionSessionMapper;
import com.macro.mall.model.SmsFlashPromotionSession;
import com.macro.mall.model.SmsFlashPromotionSessionExample;
import com.macro.mall.service.SmsFlashPromotionProductRelationService;
import com.macro.mall.service.SmsFlashPromotionSessionService;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/** 限时购场次管理Service实现类 Created by macro on 2018/11/16. */
@Service
public class SmsFlashPromotionSessionServiceImpl implements SmsFlashPromotionSessionService {
  @Autowired private SmsFlashPromotionSessionMapper promotionSessionMapper;
  @Autowired private SmsFlashPromotionProductRelationService relationService;

  @Override
  public int create(SmsFlashPromotionSession promotionSession) {
    promotionSession.setCreateTime(new Date());
    return promotionSessionMapper.insert(promotionSession);
  }

  @Override
  public int update(Long id, SmsFlashPromotionSession promotionSession) {
    promotionSession.setId(id);
    return promotionSessionMapper.updateByPrimaryKey(promotionSession);
  }

  @Override
  public int updateStatus(Long id, Integer status) {
    SmsFlashPromotionSession promotionSession = new SmsFlashPromotionSession();
    promotionSession.setId(id);
    promotionSession.setStatus(status);
    return promotionSessionMapper.updateByPrimaryKeySelective(promotionSession);
  }

  @Override
  public int delete(Long id) {
    return promotionSessionMapper.deleteByPrimaryKey(id);
  }

  @Override
  public SmsFlashPromotionSession getItem(Long id) {
    return promotionSessionMapper.selectByPrimaryKey(id);
  }

  @Override
  public List<SmsFlashPromotionSession> list() {
    SmsFlashPromotionSessionExample example = new SmsFlashPromotionSessionExample();
    return promotionSessionMapper.selectByExample(example);
  }

  @Override
  public List<SmsFlashPromotionSessionDetail> selectList(Long flashPromotionId) {
    List<SmsFlashPromotionSessionDetail> result = new ArrayList<>();
    SmsFlashPromotionSessionExample example = new SmsFlashPromotionSessionExample();
    example.createCriteria().andStatusEqualTo(1);
    List<SmsFlashPromotionSession> list = promotionSessionMapper.selectByExample(example);
    for (SmsFlashPromotionSession promotionSession : list) {
      SmsFlashPromotionSessionDetail detail = new SmsFlashPromotionSessionDetail();
      BeanUtils.copyProperties(promotionSession, detail);
      long count = relationService.getCount(flashPromotionId, promotionSession.getId());
      detail.setProductCount(count);
      result.add(detail);
    }
    return result;
  }
}
